home *** CD-ROM | disk | FTP | other *** search
/ Chip: Internet / Chip Internet.iso / wwwutil / hotjava.ins / hotjava.exe / hotjava / classsrc / browser / tools / JavaSearch / StopList.java < prev    next >
Text File  |  1995-08-11  |  3KB  |  104 lines

  1. /*
  2.  * @(#)StopList.java    1.5 95/03/14 Herb Jellinek
  3.  *
  4.  * Copyright (c) 1995 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20.  
  21. package browser.tools.JavaSearch;
  22.  
  23. import java.util.Hashtable;
  24. import java.io.*;
  25.  
  26. public class StopList {
  27.  
  28.     /**
  29.       * Constants
  30.       */
  31.     public static final String defaultFile = "real-short-stoplist.txt";
  32.  
  33.     // We store the stop words here, hashed to themselves.
  34.     protected Hashtable wordHash;
  35.  
  36.     // True if we want to reject 'words' that are all numeric
  37.     protected boolean stopNumerics;
  38.  
  39.     public StopList(String stopFile, boolean noNumerics) {
  40.     stopNumerics = noNumerics;
  41.     wordHash = readStopList(stopFile);
  42.     if (wordHash == null) {
  43.         wordHash = new Hashtable();
  44.     }
  45.     }
  46.  
  47.     public StopList(String stopFile) {
  48.     this(stopFile, true);
  49.     }
  50.  
  51.     public int size() {
  52.     return wordHash.size();
  53.     }
  54.     
  55.     public String toString() {
  56.     String result = "StopList[nums "+(stopNumerics ? "no" : "ok");
  57.     result += ", len="+size()+"]";
  58.     return result;
  59.     }
  60.     
  61.     /**
  62.      *  Returns true if the word is a stop word (on the stop list or
  63.      *  all-numeric).
  64.      */
  65.     public boolean isStopWord(String word) {
  66.     return ((stopNumerics && allNumeric(word)) ||
  67.         (wordHash.get(word) != null));
  68.     }
  69.  
  70.     /**
  71.      *  Returns true if the word is all-numeric.
  72.      */
  73.     public static boolean allNumeric(String s) {
  74.     for (int i = 0; i < s.length(); i++) {
  75.         if (!Character.isDigit(s.charAt(i))) return false;
  76.     }
  77.     return true;
  78.     }
  79.  
  80.     /**
  81.      *  Read the contents of the stop list file into
  82.      *  wordHash.  Words in the file are stored one per line.
  83.      *  Skips all blank lines and any line beginning with ';'.
  84.      */
  85.     public Hashtable readStopList(String fileName) {
  86.     Hashtable hash = new Hashtable();
  87.     FileInputStream fileIn = new FileInputStream(fileName);
  88.     DataInputStream in = new DataInputStream(fileIn);
  89.  
  90.     while (true) {
  91.         String word = in.readLine();
  92.         if (word == null) break;
  93.         if (word.length() == 0 || word.startsWith(";")) continue;
  94.         hash.put(word, word);
  95.     }
  96.  
  97.     //System.out.println("Read "+hash.size()+"-word stop list.");
  98.     fileIn.close();
  99.     
  100.     return hash;
  101.     }
  102.  
  103. }
  104.